import logging
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from aiogram.enums.parse_mode import ParseMode
from aiogram.filters import Command
from aiogram import Router
from os import environ

from langchain.schema import HumanMessage
from langchain.chat_models.gigachat import GigaChat

from messages import messages
from keyboards import keyboard


#TODO: Вынести эти штуки в .env
API_TOKEN = environ.get('TG_BOT_TOKEN')
chat = GigaChat(credentials=environ.get('GIGACHAT_API_CREDENTIALS'), 
                verify_ssl_certs=False,
                model='GigaChat-Pro')

# Включаем логирование
logging.basicConfig(level=logging.INFO)

# Инициализируем бота и диспетчер
bot = Bot(token=API_TOKEN)
dp = Dispatcher()
router = Router()
dp.include_router(router)

# Команда /start
@router.message(Command("start"))
async def send_welcome(message: Message):
    await message.answer(
        "Привет! Я бот-юрист, отвечающий на вопросы, связанные с законодательством",
        reply_markup=keyboard
        )

# Команда /help
@router.message(Command("help"))
async def send_help(message: Message):
    await message.answer(
        "Напишите мне, что не получилось сделать",
        reply_markup=keyboard
        )

# Эхо ответ на текстовые сообщения
@router.message()
async def echo(message: Message):
    messages.append(HumanMessage(content=message.text))
    res = chat(messages)
    await message.answer(res.content, parse_mode=ParseMode('Markdown'))

if __name__ == '__main__':
    # Запускаем поллинг
    dp.run_polling(bot)
